package pe.com.bbva.efcap.servidor.modelo.entidad;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
import java.math.BigDecimal;
import java.util.List;


/**
 * The persistent class for the TEF010_CLIENTE database table.
 * 
 */

@Entity
@Table(name="TEF010_CLIENTE")
public class Cliente implements Serializable {
	private static final long serialVersionUID = 1L;
	private long idCliente;
	private String codigoCentral;
	private Timestamp fechaActualizacion;
	private Timestamp fechaCreacion;
	private String descripcion;
	private String nombreCliente;
	private String numeroDocumento;
	private BigDecimal estado;
	private String tipoDocumento;
	private String usuarioActualizacion;
	private String usuarioCreacion;
	private List<EstadoFinaciero> estadoFinancieros;
	private List<Simulacion> simulacions;

	public Cliente() {
	}


	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SQ_CLIENTE")
	@SequenceGenerator(sequenceName="SQ_CLIENTE", name = "SQ_CLIENTE", allocationSize = 0)	
	@Column(name="CD_ID_CLIENTE")
	public long getIdCliente() {
		return this.idCliente;
	}

	public void setIdCliente(long idCliente) {
		this.idCliente = idCliente;
	}


	@Column(name="CD_CODIGO_CENTRAL")
	public String getCodigoCentral() {
		return this.codigoCentral;
	}

	public void setCodigoCentral(String codigoCentral) {
		this.codigoCentral = codigoCentral;
	}


	@Column(name="FH_ACTUALIZACION")
	public Timestamp getFechaActualizacion() {
		return this.fechaActualizacion;
	}

	public void setFechaActualizacion(Timestamp fechaActualizacion) {
		this.fechaActualizacion = fechaActualizacion;
	}


	@Column(name="FH_CREACION")
	public Timestamp getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Timestamp fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}


	@Column(name="NB_DESCRIPCION")
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}


	@Column(name="NB_NOMBRE_CLIENTE")
	public String getNombreCliente() {
		return this.nombreCliente;
	}

	public void setNombreCliente(String nombreCliente) {
		this.nombreCliente = nombreCliente;
	}


	@Column(name="NU_NUMERO_DOCUMENT")
	public String getNumeroDocumento() {
		return this.numeroDocumento;
	}

	public void setNumeroDocumento(String numeroDocumento) {
		this.numeroDocumento = numeroDocumento;
	}


	@Column(name="ST_ESTADO")
	public BigDecimal getEstado() {
		return this.estado;
	}

	public void setEstado(BigDecimal estado) {
		this.estado = estado;
	}


	@Column(name="TP_TIPO_DOCUMENTO")
	public String getTipoDocumento() {
		return this.tipoDocumento;
	}

	public void setTipoDocumento(String tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}


	@Column(name="TX_USU_ACTUALIZAC")
	public String getUsuarioActualizacion() {
		return this.usuarioActualizacion;
	}

	public void setUsuarioActualizacion(String usuarioActualizacion) {
		this.usuarioActualizacion = usuarioActualizacion;
	}


	@Column(name="TX_USU_CREACION")
	public String getUsuarioCreacion() {
		return this.usuarioCreacion;
	}

	public void setUsuarioCreacion(String usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}


	//bi-directional many-to-one association to EstadoFinanciero
	@OneToMany(mappedBy="cliente")
	public List<EstadoFinaciero> getEstadoFinancieros() {
		return this.estadoFinancieros;
	}

	public void setEstadoFinancieros(List<EstadoFinaciero> estadoFinancieros) {
		this.estadoFinancieros = estadoFinancieros;
	}

	public EstadoFinaciero addEstadoFinanciero(EstadoFinaciero estadoFinanciero) {
		getEstadoFinancieros().add(estadoFinanciero);
		estadoFinanciero.setCliente(this);

		return estadoFinanciero;
	}

	public EstadoFinaciero removeEstadoFinanciero(EstadoFinaciero estadoFinanciero) {
		getEstadoFinancieros().remove(estadoFinanciero);
		estadoFinanciero.setCliente(null);

		return estadoFinanciero;
	}


	//bi-directional many-to-one association to Simulacion
	@OneToMany(mappedBy="cliente")
	public List<Simulacion> getSimulacions() {
		return this.simulacions;
	}

	public void setSimulacions(List<Simulacion> simulacions) {
		this.simulacions = simulacions;
	}

	public Simulacion addSimulacion(Simulacion simulacion) {
		getSimulacions().add(simulacion);
		simulacion.setCliente(this);

		return simulacion;
	}

	public Simulacion removeSimulacion(Simulacion simulacion) {
		getSimulacions().remove(simulacion);
		simulacion.setCliente(null);

		return simulacion;
	}


	@Override
	public String toString() {
		return "Cliente [idCliente=" + idCliente + ", codigoCentral="
				+ codigoCentral + ", descripcion=" + descripcion
				+ ", nombreCliente=" + nombreCliente + ", numeroDocumento="
				+ numeroDocumento + ", estado=" + estado + ", tipoDocumento="
				+ tipoDocumento + "]";
	}

	
	
}
